In a remote presentation session, a client computer and a server computer communicate across a communications network. The client sends the server locally-received input, such as mouse cursor movements and keyboard presses. In turn, the server receives this input and performs processing associated with it, such as executing an application in a user session. When the server's processing results in output, such as graphical output or sound, this output is sent to the client for presentation. In this manner, applications appear to a user of the client to execute on the client when, they in fact, execute on the server.
The graphical output generated by the server in a remote presentation often taxes, or even exceeds, the bandwidth available between the client and the server. In view of this limitation of bandwidth, it is common for the server to compress the graphical data before transmitting it across the communications network. When the client receives this compressed data, it then un-compresses the data before displaying it.
There are many problems with compressing graphical data for transmission across a communications network, some of which are well known.